package com.heatup.apt.management.service.coupon;

import com.heatup.apt.model.coupon.CouponCheck;
import com.heatup.apt.model.coupon.CouponDetail;
import com.heatup.apt.model.coupon.CouponInfo;

import java.util.List;
import java.util.Map;

/**
 * @author: Blank
 * @create: 2016-11-25-上午 9:59
 */
public interface CouponService {


    /**
     * 保存优惠券信息
     *
     * @param couponInfo
     * @param userName
     * @return >0 成功
     */
    int saveCoupon(CouponInfo couponInfo, String userName);

    /**
     * 查询优惠券校验人列表
     * @param type 1 优惠券校验人列表 2客户经理列表
     * @return
     */
    List<CouponCheck> queryAllCheckList(Integer type);

    /**
     * 优惠券分页查询
     * @param paramsMap
     * @return
     */
    Map<String,Object> queryCouponList(Map<String, Object> paramsMap);

    /**
     * 优惠券查询
     * @param id 主键
     * @return
     */
    CouponInfo queryById(Integer id);

    /**
     * 更新优惠券为上线
     *
     * @param id 主键
     * @param checkName 审核人
     * @param checkPhone 手机号
     * @return
     */
    int updateCouponToOnline(Integer id, String checkName, String checkPhone);

    /**
     * 更新优惠券为下架
     *
     * @param id 主键
     * @return
     */
    int updateCouponToOffline(Integer id);



    String generatorCouponCodeBy(Integer couponId);

    /**
     * 查询优惠券领取记录
     *
     * @param paramsMap 查询条件
     * @return
     */
    Map<String,Object> queryCouponGetHistoryList(Map<String, Object> paramsMap);

    /**
     * 分布查询优惠券新增(审核)
     *
     * @param paramsMap 查询条件
     * @return
     */
    Map<String,Object> queryCouponAddList(Map<String, Object> paramsMap);

    
    
    /**
     * 生成优惠券详情信息
     * @param id
     * @return
     */
    Map<String,Object> downAndGeneratorCouponDetailInfo(Integer id);


    /**
     * 检查优惠券是否存在名称相同时 兑换时间/使用时间冲突
     *
     * @param couponInfo
     * @return true 存在/false 不存在
     */
    boolean checkByName(CouponInfo couponInfo);
    
    /**
	 * 添加优惠券明细 这里只是现金券 其余的券还没有添加如果有业务需求在添加
	 * 
	 */
    String insertOrUpdateCouponDetailBy(CouponInfo couponInfo, Integer userId, CouponDetail couponDetail, boolean bInsert,Map<String, Object> retMap);

}
